home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.OpenProm / RCS / main.c,v < prev    next >
Text File  |  1991-01-13  |  3KB  |  165 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     91.01.13.02.39.23;  author dlong;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     90.10.10.15.13.28;  author jhh;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @@
  22.  
  23.  
  24. 1.2
  25. log
  26. @added support for sun4c.  Little effort made to keep sun4 stuff.
  27. @
  28. text
  29. @/*-
  30.  * main.c --
  31.  *    First-level boot program for Sprite. Takes its arguments
  32.  *    and uses tftp to download the appropriate kernel image.
  33.  *
  34.  * Copyright (c) 1987 by the Regents of the University of California
  35.  *
  36.  * Permission to use, copy, modify, and distribute this
  37.  * software and its documentation for any purpose and without
  38.  * fee is hereby granted, provided that the above copyright
  39.  * notice appear in all copies.  The University of California
  40.  * makes no representations about the suitability of this
  41.  * software for any purpose.  It is provided "as is" without
  42.  * express or implied warranty.
  43.  *
  44.  *
  45.  */
  46. #ifndef lint
  47. static char rcsid[] =
  48. "$Header: /sprite/src/boot/netBoot/RCS/main.c,v 1.1 90/10/10 15:13:28 jhh Exp Locker: jhh $ SPRITE (Berkeley)";
  49. #endif lint
  50.  
  51. #include    "boot.h"
  52. #include    "mach.h"
  53. #include    <string.h>
  54.  
  55. /*-
  56.  *-----------------------------------------------------------------------
  57.  * main --
  58.  *    Main function for downloading stuff.
  59.  *
  60.  * Results:
  61.  *    None.
  62.  *
  63.  * Side Effects:
  64.  *    Begins the booted program.
  65.  *
  66.  *-----------------------------------------------------------------------
  67.  */
  68. main() 
  69. {
  70.     int        unitNum = 0;
  71.     char    *fileName, *devName;
  72.     int        startAddr;
  73.     void    *fileId;
  74.     
  75.     /*
  76.      * Enable interrupts so that L1-a and the milli-second timer work.
  77.      */
  78.     Mach_EnableIntr();
  79.     if (!CheckRomMagic()) {
  80.     printf("Do not know about ROM magic %x\n", RomMagic);
  81.     ExitToMon();
  82.     }
  83.     printf ("\nROM version is %d\n", RomVersion);
  84.     devName = BootDevName();
  85.     printf("Boot Device: %s\n", devName);
  86.     fileName = BootFileName();
  87.     printf("Boot Path: %s\n", fileName);
  88.  
  89.     if ((strcmp(fileName, "vmunix") == 0) || (*fileName == '\0')) {
  90.     fileName = BOOT_FILE;
  91.     }
  92.  
  93.     printf ("\nSpriteBoot: ");
  94.     PrintBootCommand();
  95.  
  96.     fileId = (void *)DevOpen(devName);
  97.     if (fileId == 0) {
  98.     printf("DevOpen(\"%s\") failed.  Aborting.\n", devName);
  99.     ExitToMon();
  100.     }
  101.     etheropen(fileId);
  102.     startAddr = tftpload(fileId, fileName, unitNum);
  103.     (void)DevClose(fileId);
  104.     
  105.     if (startAddr == -1){
  106.     ExitToMon();
  107.     } else {
  108.     /*
  109.      * Jump to the address returned by tftpload
  110.      */
  111.     printf("Starting execution at 0x%x\n", startAddr);
  112.     startKernel(startAddr);
  113.     return(startAddr);
  114.     }
  115. }
  116. @
  117.  
  118.  
  119. 1.1
  120. log
  121. @Initial revision
  122. @
  123. text
  124. @d20 1
  125. a20 1
  126. "$Header$ SPRITE (Berkeley)";
  127. d24 2
  128. a26 3
  129. #include    "saio.h"
  130. #include    "bootparam.h"
  131.  
  132. d42 4
  133. a45 3
  134.     register struct bootparam    *bp = *romp->v_bootparam;
  135.     struct saioreq        req;
  136.     int                  startAddr;
  137. d47 13
  138. d61 2
  139. a62 2
  140.     if ((strcmp(bp->bp_name, "vmunix") == 0) || (*bp->bp_name == '\0')) {
  141.     bp->bp_name = BOOT_FILE;
  142. d65 2
  143. a66 3
  144.     printf ("SpriteBoot: %c%c(%x,%x,%x)%s\n",
  145.         bp->bp_dev[0], bp->bp_dev[1], bp->bp_ctlr,
  146.         bp->bp_unit, bp->bp_part, bp->bp_name);
  147. d68 4
  148. a71 7
  149.     req.si_ctlr = bp->bp_ctlr;
  150.     req.si_unit = bp->bp_unit;
  151.     req.si_boff = (daddr_t)bp->bp_part;
  152.     req.si_boottab = bp->bp_boottab;
  153.     
  154.     if (devopen(&req)) {      /* Do all the hard work */
  155.     (*romp->v_exit_to_mon)();
  156. d73 3
  157. a75 3
  158.     etheropen( &req);
  159.     startAddr = tftpload(&req, bp);
  160.     devclose(&req);
  161. d78 1
  162. a78 1
  163.     (*romp->v_exit_to_mon)();
  164. @
  165.